﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Espam.Idiomas.Decimo.Tesis.Datos;
using System.Data;
using System.Data.SqlClient;

namespace Espam.Idiomas.Decimo.Tesis.Negocio
{
    public class Nivel
    {
        public int idNivel { get; set; }
        public int nivel { get; set; }
        public string equivalente { get; set; }
        public int ciclo { get; set; }
        public int idDocente { get; set; }
        public int idTipoModulo { get; set; }
    }
    public class ListadoNiveles:Nivel
    { 
        public List<Nivel> getNiveles()
        {
            List<Nivel> lista = new List<Nivel>();
            SqlDataReader reader;
            BaseDatos oBase = new BaseDatos();
            try
            {

                string consulta = string.Format("sp_getNiveles");
                SqlCommand comando = new SqlCommand(consulta,oBase.conexion);
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@ciclo",ciclo);
                //comando.Parameters.AddWithValue("@idTipoModulo", idTipoModulo);
                oBase.Conectar();
                reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    Nivel oNivel = new Nivel();
                    oNivel.idNivel = reader.GetInt32(0);
                    oNivel.nivel = reader.GetInt32(1);
                    oNivel.equivalente = reader.GetString(2);
                    lista.Add(oNivel);
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                oBase.CerrarConexion();
            }
            return lista;
        }

        public List<Nivel> getNivelesConTipo()
        {
            List<Nivel> lista = new List<Nivel>();
            SqlDataReader reader;
            BaseDatos oBase = new BaseDatos();
            try
            {

                string consulta = string.Format("sp_getNivelesConTipo");
                SqlCommand comando = new SqlCommand(consulta, oBase.conexion);
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@ciclo", ciclo);
                comando.Parameters.AddWithValue("@idTipoModulo", idTipoModulo);
                oBase.Conectar();
                reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    Nivel oNivel = new Nivel();
                    oNivel.idNivel = reader.GetInt32(0);
                    oNivel.nivel = reader.GetInt32(1);
                    oNivel.equivalente = reader.GetString(2);
                    lista.Add(oNivel);
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                oBase.CerrarConexion();
            }
            return lista;
        }

        public string ConsultarNivelPublicado()
        {
            string mensaje="";
            SqlDataReader reader;
            BaseDatos oBase = new BaseDatos();
            try
            {
                string consulta = string.Format("sp_consultarIsExistsNivelPublish");
                SqlCommand comando = new SqlCommand(consulta, oBase.conexion);
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@idNivel", idNivel);
                comando.Parameters.AddWithValue("ciclo", ciclo);
                comando.Parameters.AddWithValue("@idTipoModulo",idTipoModulo);
                oBase.Conectar();
                reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    mensaje = reader.GetString(0);
                }
            }
            catch (Exception ex)
            {

                mensaje = ex.Message;
            }
            finally
            {
                oBase.CerrarConexion();
            }
            return mensaje;
        }

        public List<Nivel> ConsultarListaNivelDisponibles()
        {
            List<Nivel> lista = new List<Nivel>();
            SqlDataReader reader;
            BaseDatos oBase = new BaseDatos();
            try
            {
                string consulta = string.Format("sp_getNivelesListaByDocente");
                SqlCommand comando = new SqlCommand(consulta, oBase.conexion);
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("idDocente", idDocente);
                oBase.Conectar();
                reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    Nivel oNivel = new Nivel();
                    oNivel.nivel = reader.GetInt32(0);
                    oNivel.equivalente = reader.GetString(1);
                    lista.Add(oNivel);
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                oBase.CerrarConexion();
            }
            return lista;
        }
    }
}
